/**
 * 打印模板字段配置文件
 * 
 * 该配置文件集中管理所有打印模板的字段定义，包括：
 * - 商品条码标签
 * - 货位条码标签
 * - 入库单
 * - 拣选单等
 */

/**
 * 默认边框配置
 * @type {Object}
 */
const defaultBorderConfig = {
  show: true,
  color: '#333333',
  width: 1,
  top: false,
  right: false,
  bottom: false,
  left: false
};

/**
 * 应用边框配置到字段
 * @param {Object} field 字段配置对象
 * @returns {Object} 添加了边框配置的字段对象
 */
const applyBorderConfig = (field) => {
  // 只为文本类型字段添加边框配置
  if (field.type === 'text') {
    return {
      ...field,
      border: field.border || { ...defaultBorderConfig },
      width:35,
      height:5
    };
  }
  return field;
};

/**
 * 打印模板字段配置对象
 * @type {Object}
 */
export const printTemplateFields = {
  // 商品条码标签字段
  product: {
    title: '商品条码打印',
	width:100,//毫米值
	height:75,//毫米值
    fields: {
      title: "商品条码打印",
      // 基础字段
      order: [
		{
		  key: 'oneBarcode',
		  label: '一维码',
		  type: 'barcode',
		  textTemplate: '${data}',
		  position: { x: 20, y: 20 },
		  style: { fontSize: 14, bold: false, color: "#000" },
		  width: 80,
		  height: 30,
		  barcodeValue: 'DF123456789012AA',
      barcodeFormat: 'CODE128',
      displayValue: true
		},
        applyBorderConfig({
          key: 'productCode',
          label: '商品编码',
          type: 'text',
          textTemplate: '商品编码: ${data}',
          position: { x: 20, y: 20 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'productName',
          label: '商品名称',
          type: 'text',
          textTemplate: '商品名称: ${data}',
          position: { x: 20, y: 20 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'specCode',
          label: '规格编码',
          type: 'text',
          textTemplate: '规格编码: ${data}',
          position: { x: 20, y: 30 },
          style: { fontSize: 14, bold: false, color: "#000" }
        })
      ]
    }
  },
  // 货位条码标签字段
  location: {
    title: '货位条码打印',
	width:100,//毫米值
	height:75,//毫米值
    fields: {
      title: "货位条码打印",
      // 基础字段
      order: [
        {
          key: 'oneBarcode',
          label: '一维码',
          type: 'barcode',
          textTemplate: '${data}',
          position: { x: 20, y: 50 },
          style: { fontSize: 14, bold: false, color: "#000" },
          barcodeFormat: 'CODE128',
          displayValue: true,
          width: 80,
          height: 30,
          barcodeValue: '123456789012'
        },
        applyBorderConfig({
          key: 'locationCode',
          label: '货位编码',
          type: 'text',
          textTemplate: '货位编码: ${data}',
          position: { x: 20, y: 20 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'locationName',
          label: '货位名称',
          type: 'text',
          textTemplate: '货位名称: ${data}',
          position: { x: 20, y: 30 },
          style: { fontSize: 14, bold: false, color: "#000" }
        })
      ]
    }
  },
  // 入库单模板字段
  inbound: {
    title: '入库单打印',
	width:210,//毫米值
	height:297,//毫米值
    fields: {
      title: "入库单打印",
      // 单据信息
      order: [
        applyBorderConfig({
          key: 'serialNumber',
          label: '序号',
          type: 'text',
          textTemplate: '序号: ${data}',
          position: { x: 20, y: 20 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'inboundOrderNo',
          label: '入库订单号',
          type: 'text',
          textTemplate: '入库订单号: ${data}',
          position: { x: 20, y: 20 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'externalOrderNo',
          label: '外部订单号',
          type: 'text',
          textTemplate: '外部单号: ${data}',
          position: { x: 100, y: 20 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'inboundNo',
          label: '入库单号',
          type: 'text',
          textTemplate: '入库单号: ${data}',
          position: { x: 20, y: 30 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'printTime',
          label: '打印时间',
          type: 'text',
          textTemplate: '打印时间: ${data}',
          position: { x: 20, y: 40 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
		applyBorderConfig({
		  key: 'inboundType',
		  label: '入库类型',
		  type: 'text',
		  textTemplate: '入库类型: ${data}',
		  position: { x: 100, y: 30 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
		applyBorderConfig({
		  key: 'cargoOwnerName',
		  label: '货主',
		  type: 'text',
		  textTemplate: '货主: ${data}',
		  position: { x: 20, y: 40 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
		applyBorderConfig({
		  key: 'warehouseName',
		  label: '仓库',
		  type: 'text',
		  textTemplate: '仓库: ${data}',
		  position: { x: 100, y: 40 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
    applyBorderConfig({
		  key: 'warehouseEntryTime',
		  label: '入库时间',
		  type: 'text',
		  textTemplate: '入库时间: ${data}',
		  position: { x: 100, y: 50 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
    applyBorderConfig({
		  key: 'warehouseEntryNumber',
		  label: '入库数量',
		  type: 'text',
		  textTemplate: '入库数量: ${data}',
		  position: { x: 20, y: 50 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
		applyBorderConfig({
		  key: 'appointmentTime',
		  label: '预约时间',
		  type: 'text',
		  textTemplate: '预约时间: ${data}',
		  position: { x: 20, y: 50 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
    applyBorderConfig({
		  key: 'appointmentNumber',
		  label: '预约数量',
		  type: 'text',
		  textTemplate: '预约数量: ${data}',
		  position: { x: 20, y: 50 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
        applyBorderConfig({
          key: 'supplierName',
          label: '供应商名称',
          type: 'text',
          textTemplate: '供应商名称: ${data}',
          position: { x: 100, y: 50 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'supplierContact',
          label: '供应商手机号',
          type: 'text',
          textTemplate: '供应商手机号: ${data}',
          position: { x: 20, y: 60 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'supplierAddress',
          label: '供应商地址',
          type: 'text',
          textTemplate: '供应商地址: ${data}',
          position: { x: 100, y: 60 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
		applyBorderConfig({
		  key: 'orderTime',
		  label: '下单时间',
		  type: 'text',
		  textTemplate: '下单时间: ${data}',
		  position: { x: 20, y: 70 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
        applyBorderConfig({
          key: 'singleNote',
          label: '单据备注',
          type: 'text',
          textTemplate: '单据备注: ${data}',
          position: { x: 100, y: 70 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'productCount',
          label: '商品总数',
          type: 'text',
          textTemplate: '商品总数: ${data}',
          position: { x: 20, y: 80 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'productName',
          label: '商品名称',
          type: 'text',
          textTemplate: '商品名称: ${data}',
          position: { x: 20, y: 90 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'productCode',
          label: '商品编码',
          type: 'text',
          textTemplate: '商品编码: ${data}',
          position: { x: 100, y: 90 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'unit',
          label: '单位',
          type: 'text',
          textTemplate: '单位: ${data}',
          position: { x: 100, y: 100 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'secondUnit',
          label: '辅助单位',
          type: 'text',
          textTemplate: '辅助单位: ${data}',
          position: { x: 20, y: 110 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'batchNumber',
          label: '批次号',
          type: 'text',
          textTemplate: '批次号: ${data}',
          position: { x: 100, y: 110 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'manufactureDate',
          label: '生产日期',
          type: 'text',
          textTemplate: '生产日期: ${data}',
          position: { x: 20, y: 120 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'expiryDate',
          label: '到期日期',
          type: 'text',
          textTemplate: '到期日期: ${data}',
          position: { x: 100, y: 120 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'weight',
          label: '重量',
          type: 'text',
          textTemplate: '重量: ${data}',
          position: { x: 20, y: 130 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'volume',
          label: '体积',
          type: 'text',
          textTemplate: '体积: ${data}',
          position: { x: 100, y: 130 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'length',
          label: '长',
          type: 'text',
          textTemplate: '长: ${data}',
          position: { x: 20, y: 140 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'width',
          label: '宽',
          type: 'text',
          textTemplate: '宽: ${data}',
          position: { x: 100, y: 140 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'height',
          label: '高',
          type: 'text',
          textTemplate: '高: ${data}',
          position: { x: 20, y: 150 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'singleQty',
          label: '商品合计数量',
          type: 'text',
          textTemplate: '商品合计数量: ${data}',
          position: { x: 100, y: 150 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        {
          key: 'productBarcode',
          label: '商品条码',
          type: 'barcode',
          textTemplate: '${data}',
          position: { x: 20, y: 100 },
          style: { fontSize: 14, bold: false, color: "#000" },
          width: 80,
          height: 30,
          barcodeValue: '978020137962',
          barcodeFormat: 'CODE128',
          displayValue: true
        },
        applyBorderConfig({
          key: 'locationCode',
          label: '货位',
          type: 'text',
          textTemplate: '货位: ${data}',
          position: { x: 100, y: 150 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'quantity',
          label: '包含商品数',
          type: 'text',
          textTemplate: '包含商品数: ${data}',
          position: { x: 20, y: 160 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'operator',
          label: '操作人',
          type: 'text',
          textTemplate: '操作人: ${data}',
          position: { x: 100, y: 160 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'batchNo',
          label: '订单批次号',
          type: 'text',
          textTemplate: '订单批次号: ${data}',
          position: { x: 20, y: 120 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'batchQty',
          label: '批次数量',
          type: 'text',
          textTemplate: '批次数量: ${data}',
          position: { x: 20, y: 130 },
          style: { fontSize: 14, bold: false, color: "#000" }
        })
      ]
    }
  },
  // 拣选单模板字段
  picking: {
    title: '拣货单打印',
	width:210,//毫米值
	height:297,//毫米值
    fields: {
      title: "拣货单打印",
      // 单据信息
      order: [
        applyBorderConfig({
          key: 'pickOrderNo',
          label: '出库订单号',
          type: 'text',
          textTemplate: '出库订单号: ${data}',
          position: { x: 20, y: 20 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'externalOrderNo',
          label: '外部单号',
          type: 'text',
          textTemplate: '外部单号: ${data}',
          position: { x: 100, y: 20 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'pickOrderType',
          label: '出库类型',
          type: 'text',
          textTemplate: '出库类型: ${data}',
          position: { x: 20, y: 30 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
		applyBorderConfig({
		  key: 'cargoOwnerName',
		  label: '货主名称',
		  type: 'text',
		  textTemplate: '货主名称: ${data}',
		  position: { x: 100, y: 30 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
		applyBorderConfig({
		  key: 'warehouseName',
		  label: '仓库名称',
		  type: 'text',
		  textTemplate: '仓库名称: ${data}',
		  position: { x: 20, y: 40 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
		applyBorderConfig({
		  key: 'storageLocation',
		  label: '货位',
		  type: 'text',
		  textTemplate: '货位: ${data}',
		  position: { x: 100, y: 40 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
        applyBorderConfig({
          key: 'customerName',
          label: '客户名称',
          type: 'text',
          textTemplate: '客户名称: ${data}',
          position: { x: 20, y: 50 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'receiverAddress',
          label: '收货地址',
          type: 'text',
          textTemplate: '收货地址: ${data}',
          position: { x: 100, y: 50 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'receiverPhone',
          label: '客户手机号',
          type: 'text',
          textTemplate: '客户手机号: ${data}',
          position: { x: 20, y: 60 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'orderTime',
          label: '下单时间',
          type: 'text',
          textTemplate: '下单时间: ${data}',
          position: { x: 100, y: 60 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'orderRemarks',
          label: '订单备注',
          type: 'text',
          textTemplate: '订单备注: ${data}',
          position: { x: 40, y: 70 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'productName',
          label: '商品名称',
          type: 'text',
          textTemplate: '商品名称: ${data}',
          position: { x: 20, y: 80 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'productCode',
          label: '商品编码',
          type: 'text',
          textTemplate: '商品编码: ${data}',
          position: { x: 100, y: 80 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        {
          key: 'productBarcode',
          label: '商品条码',
          type: 'barcode',
          textTemplate: '${data}',
          position: { x: 40, y: 250 },
          style: { fontSize: 14, bold: false, color: "#000" },
          barcodeFormat: 'CODE128',
          displayValue: true,
          width: 80,
          height: 30,
          barcodeValue: '978020137962'
        },
        applyBorderConfig({
          key: 'unit',
          label: '单位',
          type: 'text',
          textTemplate: '单位: ${data}',
          position: { x: 20, y: 100 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'secondUnit',
          label: '辅助单位',
          type: 'text',
          textTemplate: '辅助单位: ${data}',
          position: { x: 100, y: 100 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'batchNumber',
          label: '批次号',
          type: 'text',
          textTemplate: '批次号: ${data}',
          position: { x: 20, y: 110 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'manufactureDate',
          label: '生产日期',
          type: 'text',
          textTemplate: '生产日期: ${data}',
          position: { x: 100, y: 110 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'expiryDate',
          label: '到期日期',
          type: 'text',
          textTemplate: '到期日期: ${data}',
          position: { x: 20, y: 120 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'weight',
          label: '重量',
          type: 'text',
          textTemplate: '重量: ${data}',
          position: { x: 100, y: 120 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'volume',
          label: '体积',
          type: 'text',
          textTemplate: '体积: ${data}',
          position: { x: 20, y: 130 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'length',
          label: '长',
          type: 'text',
          textTemplate: '长: ${data}',
          position: { x: 100, y: 130 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'width',
          label: '宽',
          type: 'text',
          textTemplate: '宽: ${data}',
          position: { x: 20, y: 140 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'height',
          label: '高',
          type: 'text',
          textTemplate: '高: ${data}',
          position: { x: 100, y: 140 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'storageLocation',
          label: '货位',
          type: 'text',
          textTemplate: '货位: ${data}',
          position: { x: 20, y: 150 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'quantity',
          label: '数量',
          type: 'text',
          textTemplate: '数量: ${data}',
          position: { x: 100, y: 150 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
		  key: 'shelfAttribute',
		  label: '库存属性',
		  type: 'text',
		  textTemplate: '库存属性: ${data}',
		  position: { x: 40, y: 160 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
        applyBorderConfig({
          key: 'operator',
          label: '操作人',
          type: 'text',
          textTemplate: '操作人: ${data}',
          position: { x: 40, y: 170 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
       
      ]
    }
  },
  // 盘点单模板字段
  inventory: {
    title: '盘点单打印',
	width:210,//毫米值
	height:297,//毫米值
    fields: {
      title: "盘点单打印",
      // 单据信息
      order: [
        applyBorderConfig({
          key: 'InventoryTaskNumber',
          label: '盘点任务号',
          type: 'text',
          textTemplate: '盘点任务号: ${data}',
          position: { x: 20, y: 20 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
		applyBorderConfig({
		  key: 'productName',
		  label: '商品名称',
		  type: 'text',
		  textTemplate: '商品名称: ${data}',
		  position: { x: 100, y: 20 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
        applyBorderConfig({
          key: 'locationCode',
          label: '货位',
          type: 'text',
          textTemplate: '货位: ${data}',
          position: { x: 20, y: 30 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
		applyBorderConfig({
		  key: 'productBarcode',
		  label: '商品条码',
		  type: 'barcode',
		  textTemplate: '${data}',
		  position: { x: 20, y: 40 },
		  style: { fontSize: 14, bold: false, color: "#000" },
		  barcodeFormat: 'CODE128',
		  displayValue: true,
		  width: 80,
		  height: 30,
		  barcodeValue: '978020137962'
		}),
        applyBorderConfig({
          key: 'productCode',
          label: '商品编码',
          type: 'text',
          textTemplate: '商品编码: ${data}',
          position: { x: 20, y: 80 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'inventoryCount',
          label: '盘点前数量',
          type: 'text',
          textTemplate: '盘点前数量: ${data}',
          position: { x: 100, y: 80 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
		applyBorderConfig({
		  key: 'differenceQuantity',
		  label: '差异量',
		  type: 'text',
		  textTemplate: '差异量: ${data}',
		  position: { x: 20, y: 90 },
		  style: { fontSize: 14, bold: false, color: "#000" }
		}),
        applyBorderConfig({
          key: 'batchNumber',
          label: '批次号',
          type: 'text',
          textTemplate: '批次号: ${data}',
          position: { x: 100, y: 90 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'manufactureDate',
          label: '生产日期',
          type: 'text',
          textTemplate: '生产日期: ${data}',
          position: { x: 20, y: 100 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'expiryDate',
          label: '过期日期',
          type: 'text',
          textTemplate: '过期日期: ${data}',
          position: { x: 100, y: 100 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'shelfAttribute',
          label: '库存属性',
          type: 'text',
          textTemplate: '库存属性: ${data}',
          position: { x: 20, y: 110 },
          style: { fontSize: 14, bold: false, color: "#000" }
        }),
        applyBorderConfig({
          key: 'operator',
          label: '操作人',
          type: 'text',
          textTemplate: '操作人: ${data}',
          position: { x: 100, y: 110 },
          style: { fontSize: 14, bold: false, color: "#000" }
        })
        
      ]
    }
  }
};

/**
 * 获取默认模板名称
 * @param {string} type 打印类型
 * @returns {string} 模板名称
 */
export const getDefaultTemplateName = (type) => {
  console.log(`获取打印类型[${type}]的默认模板名称`);
  return printTemplateFields[type]?.title || '打印模板';
};

/**
 * 根据打印类型调整纸张设置
 * @param {string} type 打印类型
 * @param {Object} paperSettings 纸张设置对象
 */
export const adjustPaperSettingsByType = (type, paperSettings) => {
  console.log(`根据打印类型[${type}]调整纸张设置`);
  const {width,height} = printTemplateFields[type]
  paperSettings.paperWidth = width;
  paperSettings.paperHeight = height;

  console.log(`调整后的纸张尺寸: ${paperSettings.paperWidth}mm x ${paperSettings.paperHeight}mm`);
};
